package service;

import java.util.List;

import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.ehcache.CacheKit;
import com.jfinal.plugin.ehcache.IDataLoader;

import config.model.User;

/**
 * 主页面登录服务类
 * @author 陈凌志
 *
 */

public class LoginService {

	/**
	 * 此方法用于用户登录验证
	 * @param userName 登录页面传递的用户名
	 * @param pwd 登录页面传递的用户密码
	 * @return User类型的用户信息，为空表示用户名或密码错误
	 * 
	 */
	public User checkUser(String userName,String pwd){
		//查询用户信息，该接口中的load()方法在缓存值不存在时才会被调用。
		List<Record> users = CacheKit.get("login", "user"+userName, new IDataLoader(){
		       public Object load() {
		           return Db.find("select * from user where userName = ? and pwd = ?",userName,pwd);
		    }});
		
		//判断用户信息，users为空表面用户名或密码错误，返回空
		if(users.isEmpty()) {
			return null;
		}else {
			//将list转为record类型，在转为user类型返回。
			Record userRecord = users.get(0);
			User user = new User().put(userRecord);
			return user;
		}
		
	}
	
	/**
	 * 此方法用于分页查询评委用户
	 * @param pageNumber 页码
	 * @return Page<Record>类型，为查询出的信息
	 * 
	 */
	public Page<Record> queryTeacher(int pageNumber){
		return Db.paginate(pageNumber, 5, "select *","from user where power != ? and power != ? ","admin","student");
		
	}
	
	/**
	 * 此方法用于查询评委
	 * @return List<Record>类型，为查询出的信息
	 * 
	 */
	public List<Record> queryTeacher() {
		return Db.find("select * from user where power != ? and power != ?","admin","student");
	}
	
	
	/**
	 * 此方法用于评委的分组
	 * @param id 评委ID
	 * @param group 组号
	 * @return boolean类型，成功返回true，否则返回false
	 * 
	 */
	public boolean updateGroup(String id,String group) {
		int i = Db.update("update user set power = ? where id = ? ",group,id);
		CacheKit.removeAll("login");
		return i == 1? true:false;
	}
	

}
